package com.timepies.domain;

import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.annotation.SuppressLint;


@SuppressLint("SimpleDateFormat")
public class Intervallo {

	// Field
	private Date start = new Date();

	// Formatter
	public static DateFormat date = new SimpleDateFormat("dd/MM/yyyy");
	public static DateFormat title = new SimpleDateFormat("EEEE dd MMMM yyyy");
	public static DecimalFormat decimal = (DecimalFormat) DecimalFormat
			.getInstance(Locale.ITALY);

	public Intervallo() {
		Calendar now = Calendar.getInstance();
		now.set(Calendar.HOUR, 0);
		now.set(Calendar.MINUTE, 0);
		now.set(Calendar.SECOND, 0);
		this.start = now.getTime();

	}

	public long getIntervallo() {
		return (new Date()).getTime() - start.getTime();
	}

	public String printTxtSentence(Pie pie, boolean extended) {
		String data, valore, template;
		long intervallo = getIntervallo();

		// decido quanti decimali
		if (intervallo > 10L || intervallo < -10L)
			decimal.setMaximumFractionDigits(0);
		else
			decimal.setMaximumFractionDigits(1);

		valore = decimal.format(Math.abs(intervallo) * pie.getCoefficente());

		if (!extended)
			return valore;

		// decido quale template usare
		if (intervallo > 0)
			template = pie.getPassato();
		else
			template = pie.getFuturo();

		// compongo l'output
		data = printStartDate();
		return String.format(template, data, valore);
	}

	public static String printTxtElapsed(String dateInString, boolean extended) {
		try {
			Intervallo interval = new Intervallo();
			interval.setStart(Intervallo.date.parse(dateInString));
			long millisecondi = Math.abs(interval.getIntervallo());
			long secondi = millisecondi / 1000;
			long minuti = secondi / 60L;
			long ore = minuti / 60L;
			long giorni = ore / 24L;
			long anni = giorni / 365L;

			String txt = (interval.getIntervallo() > 0) ? "Sono passati "
					: "Mancano ";

			long _secondi = secondi;
			long _minuti = minuti;
			long _ore = ore;
			long _giorni = giorni;
			long _anni = anni;

			if (_anni > 0) {
				txt += _anni + " anni ";
				_giorni = giorni % (anni * 365L);
			}
			if (_giorni > 0) {
				txt += _giorni + " giorni ";
				_ore = ore % (giorni * 24L);
			}
			if (_ore > 0) {
				txt += _ore + " ore ";
				_minuti = minuti % (ore * 60L);
			}

			if (!extended)
				return txt;

			if (_minuti > 0) {
				txt += _minuti + " minuti ";
				_secondi = secondi % (minuti * 60L);
			}
			if (_secondi > 0)
				txt += _secondi + " secondi ";

			return txt;
		} catch (Exception e) {
		}
		return "";
	}

	public String printStartDate() {
		return date.format(start);
	}

	public Date getStart() {
		return start;
	}

	public void setStart(Date start) {
		this.start = start;
	}

}
